#include <iostream>

using namespace std;

#include "unordered_map.h"

//void test1()
//{
//	ly::hashBucket<int, pair<int, int>> hash;
//	hash.insert(make_pair(1, 1));
//	hash.insert(make_pair(11, 11));
//	hash.insert(make_pair(12, 1));
//	hash.insert(make_pair(15, 1));
//	hash.insert(make_pair(3, 1));
//	hash.insert(make_pair(9, 1));
//	hash.insert(make_pair(99, 1));
//	hash.insert(make_pair(999, 1));
//	hash.insert(make_pair(54, 1));
//	hash.insert(make_pair(88, 1));
//	hash.insert(make_pair(75, 1));
//	
//	cout << hash.erase(11) << endl;
//	cout << hash.erase(21) << endl;
//	cout << hash.erase(15) << endl;
//	cout << hash.erase(175) << endl;
//
//	if (hash.find(88) != nullptr)
//	{
//		cout << hash.find(88)->_data.first << ":" << hash.find(88)->_data.second << endl;
// 	}
//}

//void test2() 
//{
//	ly::unordered_map<int, int> hash;
//	hash.insert(make_pair(1, 1));
//	hash.insert(make_pair(11, 1));
//	hash.insert(make_pair(3, 1));
//	hash.insert(make_pair(5, 1));
//	hash.insert(make_pair(9, 1));
//	hash.insert(make_pair(10, 1));
//	
//	ly::unordered_map<int, int>::iterator it = hash.begin();
//	while (it != hash.end())
//	{
//		cout << it->first << ":" << it->second << endl;
//		++it;
//	}
//
//	/*for (auto kv : hash)
//	{
//		cout << kv->first << ":" << kv->second << endl;
//	}*/
//	cout << endl;
//}

void test3()
{
	ly::unordered_map<int, int> hash;
	hash.insert(make_pair(1, 1));
	hash.insert(make_pair(5, 1));
	hash.insert(make_pair(9, 1));
	hash.insert(make_pair(8, 1));
	hash.insert(make_pair(3, 1));

	cout << hash.size() << endl;
	cout << hash.empty() << endl;
	cout << hash.count(1) << endl;
	cout << hash.count(2) << endl;

	hash[2]++;
	cout << hash.count(2) << endl;
}

int main()
{
	//test1();
	//test2();
	test3();

	return 0;
}